/**
 * @hidden
 * @opt attributes
 */
class UMLOptions {}

/**
 * @hidden
 */
class Date {}


/**
 * @stereotype Entity
 * @has 1 - * ColonyGenotype
 * @has 1 - * Litter
 * @has 1 - * BreedingPair
 * @has 1 - * TeamMember
 * @has 1 - * Experiment
 * @has 1 - * Mouse
 */
class Colony {
	BreedingPair[] breedingPairs;
	ColonyGenotype[] colonyGenotypes;
	int defaultWeanTime;
	Experiment[] experiments;
	Litter[] litters;
	Mouse[] mice;
	TeamMember[] teamMembers;
}
/**
 * @stereotype Entity
 */
class ColonyGenotype {
	String type;
}
/**
 * @stereotype Entity
 * @has 1 - 1 ColonyGenotype
 */
class Mouse {
	String cage;
	boolean disabled;
	int duration;
	int gender;
	ColonyGenotype genotype;
	String tag;
}

/**
 * @stereotype Entity
 * @has 1 - 2 Mouse
 */
class BreedingPair {
	boolean disabled;
	Mouse father;
	Mouse mother;
}
/**
 * @stereotype Entity
 * @composed 1 - * ExperimentControlGroup
 * @composed 1 - * ExperimentAllocation
 */
class Experiment {
	ExperimentControlGroup[] controlGroups;
	ExperimentAllocation[] experimentAllocations;
	int[] experimentDurations;
	int priority;
}
/**
 * @stereotype Entity
 * @has 1 - 1 ColonyGenotype
 */
class ExperimentControlGroup {
	int ageLowerLimit;
	int ageUpperLimit;
	int gender;
	ColonyGenotype genotype;
	int mouseQuantity;
}

/**
 * @stereotype Entity
 * @has 1 - 1 ExperimentControlGroup
 * @has 1 - 1 Mouse
 */
class ExperimentAllocation {
	Date checkDate;
	ExperimentControlGroup experimentControlGroup;
	Mouse mouse;
	boolean suggested;
}

/**
 * @stereotype Entity
 * @has 1 - 1 BreedingPair
 * @has 1 - * Mouse
 */
class Litter {
	BreedingPair breedingPair;
	Date dateOfBirth;
	Mouse[] mice;
}
/**
 * @stereotype Entity
 */
class TeamMember {
	String memberEmail;
	String memberName;
}

